-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Get battery levels #281
Get battery levels #281
Conversation
0b3b839
to
3179404
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
First review. 👍
Codecov Report
@@ Coverage Diff @@
## develop #281 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 44 44
Lines 874 878 +4
=========================================
+ Hits 874 878 +4
Continue to review full report at Codecov.
|
fbfa4c0
to
65e72c1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2ème review, on est presque bon :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Il faut revoir les noms des namespaces et discuter de la pertinence des Levels dans Core plutôt que dans Kit
41f45dc
to
ff514ec
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Modulo les derniers commentaires, on va être bon.
le seul truc qu'il faut faire c'est avoir deux commits:
- premier pour le renaming de LKCoreBattery à CoreBattery
- deuxième pour le code
prendre exemple sur les autres commits de renaming pour voir comment écrire le message.
79c9971
to
76f5798
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Beaucoup de choses sont parties depuis la dernière review, j'avoue être un peu déconcerté.
La première chose qui me perturbe c'est le retrait des informations propre au matériel: R1 et R2 ou du moins le coefficient du PdT. Sans ça je ne vois pas comment tu peux relier ton float [0, 1] à la tension de ta batteries [0, 13.20V].
La seconde chose c'est dans l'utilisation, si j'appelle getRemainingVoltage
j'ai une valeur entre 0 et 1. Si j'ai 1.0
, est ce que ça signifie qu'il reste à la batterie 1.0V?
--
Je sais qu'il y avait litige avec les levels, parce qu'ils étaient subjectifs, mais tout ce qui est lié aux conversions sont objectifs, je ne peux pas obliger R1 à être à 42Ω par exemple, c'est physiquement impossible.
Du coup quel est le plan pour la suite?
je rejoins @YannLocatelli sur ces points. tout ce qui est lié au matériel doit être présent dans le Core donc les conversions des résistances doivent y être.
à mon sens get remaining voltage doit te retourner la valeur en volt, donc 7,3 si c'est 7.3. Si on veut que ce soit entre 0 et 1, dans ce cas là on parlera de pourcentage plutôt. mais je ne me lancerai pas dans les % ici. le calcul il peut être fait sur l'iPad plutôt, il faut juste retourner la bonne valeur du voltage. |
33db171
to
3bf893c
Compare
247d39c
to
d351541
Compare
e7546d2
to
0d2d320
Compare
0d2d320
to
f1320bc
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tout me va dans le fonctionnement ✅✨
Par contre c'est un peu difficile à relire, je vais encore chipoter sur certains termes et sur la présentation du fonctionnement de la batteries dans les unit tests
TEST(CoreBatteryTest, getVoltagePercentageHigherThan1) | ||
{ | ||
auto expected_digital_voltage = 0.9; | ||
auto expected_percentage_voltage = 1.; | ||
|
||
spy_AnalogIn_setValue(expected_digital_voltage); | ||
|
||
ASSERT_EQ(expected_percentage_voltage, corebattery.getPercentage()); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
C'est contre-intuitif, le nom du test nous dit qu'on va tester si c'est plus grand que 1, mais on voit nulle part une valeur (strictement) plus grand que 1.
Venant de l'extérieur c'est difficile à comprendre quel est la variable (s'il y en a une) qui sera plus grand que 1.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Le test c'est "s'assurer que pour une valeur qui devrait donner un pourcentage supérieur à 1 on ne dépasse pas 1", d'ou le fait qu'il n'y ait pas de valeur supérieure à 1 car on n'en veut pas.
|
||
auto CoreBattery::getVoltage() -> float | ||
{ | ||
auto digitalVoltage = getADCVoltage(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Les deux noms ne (me) conviennent pas.
digitalVoltage
parce qu'il est censé correspondre à la tension batterie or c'est la tension batterie avec division du pont diviseur de tension. Donc ça serait plus digitalDividedVoltage
.
Sinon il est possible de le voir dans l'autre sens digitalInputVoltage
.
getADCVoltage
, ADC correspond à Analog-Digital Converter. C'est un outil et donc pas quelque chose qui se mesure.
Dans l'idée il devrait avoir un nom équivalent à la variable qui va get
la valeur. Donc quelque chose comme auto digitalVoltage = getDigitalVoltage()
ou auto digitalInputVoltage = getDigitalInputVoltage()
, ça ferait plus de sens.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Soit dit en passant, les variables sont en snake_case
, donc plutôt
auto digital_voltage = getDigitalVoltage();
// or
auto digital_input_voltage = getDigitalInputVoltage();
auto CoreBattery::readVoltage() -> float | ||
{ | ||
return _pin.read(); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je vais encore être enquiquinant, je vais remettre le commentaire de la dernière fois:
La seconde chose c'est dans l'utilisation, si j'appelle getRemainingVoltage j'ai une valeur entre 0 et 1. Si j'ai 1.0, est ce que ça signifie qu'il reste à la batterie 1.0V?
Ici on se retrouve avec la même situation: si j'appelle readVoltage()
, j'ai une valeur entre 0 et 1: ça signifie qu'il ne peut y avoir plus que 1V en entrée du MCU max?
Peut-être était-ce ici le read_voltage
?
auto CoreBattery::readVoltage() -> float | |
{ | |
return _pin.read(); | |
} | |
auto CoreBattery::readVoltage() -> float | |
{ | |
return _pin.read_voltage(); | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oui je suis d'accord, et de faire ça fix les problèmes de noms évoqués plus haut.
012bc5b
to
e1c590a
Compare
e1c590a
to
f557d78
Compare
d8664d0
to
7b4b22c
Compare
- Remove LK prefix from LKCoreBattery
- move namespance constexpr to class - Add voltage reference - Add max/min capacity values
7b4b22c
to
62fd075
Compare
Kudos, SonarCloud Quality Gate passed! |
Resistors value from documentation doesn't fit the actual value of resistors in the robot, until I know those values the coefficient is 0.125 which correspond to the actual coefficient of the voltage divider.